package algorithm.sorting;

//希尔排序
public class ShellSort {
    //升序，增量减半
    public static void shellSort(int[] table){
        //控制增量，增量减半,delta是增量
        for(int delta = table.length/2;delta>0;delta/=2){
            //每个元素在自己组内进行直接插入排序
            for(int i = delta;i<table.length;i++){
                int temp = table[i];
                int j = i-delta; //相距delta远
                //一组中前面较大的元素向后移
                while (j>=0 && temp<table[j]){
                    table[j+delta] = table[j];
                    j-=delta; //继续与前面的元素比较
                }
                table[j+delta] = temp;//插入元素位置
            }
        }
    }
}
